const fs = require('fs');
const path = require('path');

async function updateProductImage(knex, productId, images) {
  // 查询当前商品的所有图片
  const currentImgs = await knex('project_images').select('*').where({ project_id: productId });

  // 找出需要删除的图片（数据库存在但前端没传）
  const removeImages = currentImgs.filter(item => !images.includes(item.image_url));

  // 找出需要添加的图片（前端传了但数据库没有）
  const addImages = images.filter(img =>
    !currentImgs.some(item => item.image_url === img)
  );

  // 删除图片记录 + 删除本地文件
  for (const img of removeImages) {
    try {
      // 删除数据库记录
      await knex('project_images').where({ id: img.id }).del();

      console.log(__dirname);

      // 删除本地文件
      const filePath = path.resolve(__dirname, '../', 'public', img.image_url); // 根据你图片路径调整
      console.log(path.join(__dirname, '../public',img.image_url), img.image_url);
      fs.unlink(filePath, (err) => {
        if (err) {
          console.error(`[图片删除失败] ${filePath}:`, err.message);
        } else {
          console.log(`[图片已删除] ${filePath}`);
        }
      });
    } catch (err) {
      console.error('[删除图片记录失败]', err);
    }
  }

  // 插入新增图片
  const insertData = addImages.map(url => ({
    project_id: productId,
    image_url: url,
  }));

  if (insertData.length > 0) {
    try {
      await knex('project_images').insert(insertData);
    } catch (err) {
      console.error('[新增图片记录失败]', err);
    }
  }
}

module.exports = {
  updateProductImage
}
